# example6_8.py
# coding=utf-8
import numpy as np
import matplotlib.pyplot as plt
import calendar
from datetime import datetime as dd

np.random.seed(0)
y = np.random.randint(5, size=10)
x = range(1, 11, 1)

plt.rcParams["font.sans-serif"] = ["SimHei"]
# 创建figure对象
plt.figure(figsize=(13, 10))  # 设置图像大小
# 创建5个axes
# 创建第1行第1列子图
ax1 = plt.subplot(3, 2, 1)
# 创建第1行第2列子图
ax2 = plt.subplot(3, 2, 2)
# 创建第2行第1列子图
ax3 = plt.subplot(3, 2, 3)
# 创建第2行第2列子图
ax4 = plt.subplot(3, 2, 4)
# 创建第3行子图
ax5 = plt.subplot(3, 1, 3)

# 选择ax1子图
plt.sca(ax1)
plt.plot(x, y, color="red")
# 设置刻度字体大小
plt.xticks(fontsize=15)
plt.yticks([])  # y轴不显示刻度和标签
plt.title("x轴标签和刻度按默认显示，y轴不显示刻度和标签", fontsize=15)

# 选择ax2子图
plt.sca(ax2)
plt.plot(x, y, "b--")
plt.xticks(x, fontsize=15)  # 横坐标标签显示x序列中的每一个值
plt.yticks(y, ())  # 纵坐标显示刻度，不显示标签
plt.title("横坐标标签显示序列中所有值，纵坐标标签不显示", fontsize=15)

# 选择ax3子图
plt.sca(ax3)
plt.plot(x, y, "g--")
# 横坐标上序列x对应的各个值位置上
# 分别用("A","B","C","D","E","F","G","H","I","J")中的元素作为标签
plt.xticks(x, ("A", "B", "C", "D", "E", "F", "G", "H", "I", "J"), fontsize=15)
plt.yticks(fontsize=15)
plt.title("文字作为坐标轴标签", fontsize=15)

# 选择ax4子图
plt.sca(ax4)
plt.plot(x, y)
# 将月份作为刻度标签，刻度颜色为红色，标签逆时针旋转80度
plt.xticks(x, calendar.month_name[1 : len(x) + 1], fontsize=15, color="r", rotation=80)
plt.yticks(fontsize=15)
plt.title("月份作为坐标刻度标签", fontsize=15)

# 选择ax5子图
plt.sca(ax5)
plt.plot(x, y, c="y")
week = []
for i in range(len(x)):
    week.append(calendar.day_name[(dd.now().weekday() + i) % 7])
plt.xticks(x, week, fontsize=15, color="k", rotation=30)
plt.yticks(fontsize=15)
plt.title("x轴的标签显示星期", fontsize=15)

# 调整子图间距
plt.subplots_adjust(wspace=0.2, hspace=0.8)
plt.savefig("ticks.png")
plt.show()
